package com.shioirikukuri.mapper;

import com.shioirikukuri.entity.DiningTable;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface DiningTableMapper {

	/**
	 * 查询所有桌位信息
	 *
	 * @return 桌位列表
	 */
	@Select("SELECT * FROM dining_table")
	List<DiningTable> selectAllDiningTables();

	/**
	 * 根据桌位ID查询桌位信息
	 *
	 * @param tableId 桌位ID
	 * @return 匹配的桌位对象
	 */
	@Select("SELECT * FROM dining_table WHERE table_id = #{tableId}")
	DiningTable selectDiningTableById(@Param("tableId") Long tableId);

	/**
	 * 根据桌位类型查询桌位信息
	 * @param tableType 桌位类型
	 * @return 桌位列表
	 */
	@Select("SELECT * FROM dining_table WHERE table_type = #{tableType}")
	List<DiningTable> selectDiningTableByType(@Param("tableType") String tableType);

	/**
	 * 插入新的桌位信息
	 *
	 * @param diningTable 新桌位的信息
	 */
	@Insert("INSERT INTO dining_table(table_name, capacity, table_type, available_count) " +
			"VALUES(#{tableName}, #{capacity}, #{tableType}, #{availableCount})")
	@Options(useGeneratedKeys = true, keyProperty = "tableId")
	void insertDiningTable(DiningTable diningTable);

	/**
	 * 更新已有桌位的信息
	 *
	 * @param diningTable 需要更新的桌位信息
	 */
	@Update("UPDATE dining_table SET table_name=#{tableName}, capacity=#{capacity}, " +
			"table_type=#{tableType}, available_count=#{availableCount} WHERE table_id=#{tableId}")
	void updateDiningTable(DiningTable diningTable);

	/**
	 * 删除指定ID的桌位
	 *
	 * @param tableId 桌位ID
	 */
	@Delete("DELETE FROM dining_table WHERE table_id = #{tableId}")
	void deleteDiningTableById(@Param("tableId") Long tableId);
}